package br.com.redefranciscanas.wiki.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

import br.com.redefranciscanas.wiki.enumerado.NvlAcesso;

@Entity
@NamedQueries({ @NamedQuery(name = "Funcionario.findAll", query = "SELECT f FROM Funcionario f"),
    @NamedQuery(name = "Funcionario.findByNomeUsuario", query = "SELECT f FROM Funcionario f WHERE f.nomeUsuario =:nomeUsuario")})
public class Funcionario { 
	@Id
	@GeneratedValue
	@Column(name = "idFuncionario")
	private Long id;
	private String nome;
	private String nomeUsuario;
	private String email;
	private String senha;
	@Enumerated(EnumType.STRING)
	@Column(nullable = false)
	private NvlAcesso nvlAcesso;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getNomeUsuario() {
		return nomeUsuario;
	}

	public void setNomeUsuario(String nomeUsuario) {
		this.nomeUsuario = nomeUsuario;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public NvlAcesso getNvlAcesso() {
		return nvlAcesso;
	}

	public void setNvlAcesso(NvlAcesso nvlAcesso) {
		this.nvlAcesso = nvlAcesso;
	}

	public boolean isUsuario() {
		return nvlAcesso.equals(NvlAcesso.USUARIO);
	}

	public boolean isSuporte() {
		return nvlAcesso.equals(NvlAcesso.SUPORTE);
	}

	public boolean isAdministrador() {
		return nvlAcesso.equals(NvlAcesso.ADMINISTRADOR);
	}
}
